﻿// CCreateExDlg.cpp: 实现文件
//

#include "pch.h"
#include "CClient.h"
#include "CCreateExDlg.h"
#include "afxdialogex.h"


// CCreateExDlg 对话框

IMPLEMENT_DYNAMIC(CCreateExDlg, CDialogEx)

CCreateExDlg::CCreateExDlg(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_CREATEEX, pParent)
{

}

CCreateExDlg::~CCreateExDlg()
{
}

void CCreateExDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CCreateExDlg, CDialogEx)
	ON_WM_SETCURSOR()
END_MESSAGE_MAP()


// CCreateExDlg 消息处理程序


BOOL CCreateExDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 自行配置UI，子控件创建
	CFont* pFont = GetFont();
	// className 通过工具->Spy->查找窗口; CRect 坐标 左上和右下; IDC和resource.h中的一样用公共的或自定义
	txNum.Create(_T("STATIC"), _T("工号(&N):"), WS_CHILD | WS_VISIBLE,
		CRect(7 * 2, 7 * 2, 32 * 2, 15 * 2), this, IDC_STATIC);
	txNum.SetFont(pFont, FALSE);
	teNum.CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), _T(""), WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL,
		CRect(35 * 2, 7 * 2, 69 * 2, 18 * 2), this, 12301);
	teNum.SetFont(pFont, FALSE);
	// teNum.ModifyStyleEx(0, WS_EX_CLIENTEDGE);// 添加Ex扩展样式，一般没效果，需要加在CreateEx第一个参数上
	// 窗口式样参考rc中的，然后加上基础的 WS_CHILD | WS_VISIBLE，也可用通过Spy对比，然后看窗口式样和扩展式样
	tList.Create(_T("SysListView32"), _T(""), WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,
		CRect(7 * 2, 36 * 2, 100 * 2, 180 * 2), this, 12302);
	CListCtrl* pList = (CListCtrl*)GetDlgItem(12302);// tList 直接强转也可用
	pList->InsertColumn(0, _T("工号"), 0, 100);

	// Create只能创建子窗口，CreateEx可用支持创建框架
	// 各派生类重写了Create，可用简化不用输入ClassName
	txNumEx.Create(_T("工号(&N):"), WS_CHILD | WS_VISIBLE,
		CRect(107 * 2, 7 * 2, 132 * 2, 15 * 2), this, IDC_STATIC);
	txNumEx.SetFont(pFont, FALSE);

	// BS_DEFPUSHBUTTON 类似选中状态
	m_add.Create(_T("添加"), WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON,
		CRect(207 * 2, 7 * 2, 255 * 2, 25 * 2), this, 12303);
	m_add.SetFont(pFont, FALSE);
	HBITMAP h = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1));
	m_add.SetBitmap(h);
	// 光标 NULL 加载系统的cursor；光标一般不能面向对象，只针对位置，重写OnSetCursor函数
	HCURSOR hCursor = LoadCursor(NULL, IDC_ARROW);
	m_add.SetCursor(hCursor);// 无效

	// BS_AUTO3STATE 支持设置 选中、未选中、半选中状态 ，并且不能设置BS_DEFPUSHBUTTON
	m_modify.Create(_T("修改"), WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTO3STATE,
		CRect(257 * 2, 7 * 2, 305 * 2, 25 * 2), this, 12304);
	m_modify.SetFont(pFont, FALSE);
	m_modify.SetCheck(BST_CHECKED);

	return TRUE;
}


BOOL CCreateExDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
	if (pWnd->GetDlgCtrlID() == 12303) {
		HCURSOR hCursor = LoadCursor(NULL, IDC_HAND);
		SetCursor(hCursor);
		return TRUE;
	}

	return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
}
